// 随机阶梯算法
function randomStair() {
	return Math.floor(Math.random()*2);
}

var P = [0.5, 0.2, 0.2, 0.1];

// 随机障碍物算法
function randomBarrier(P) {
	var minNum = 1, curNum = 0;
	for(var i = 0; i < P.length; i++) {
		curNum = Math.floor(P[i] * 100);
		minNum = gcd(minNum, curNum);
	}

	// 生成概率数组
	var arr = [], l = 0;
	for(var i = 0; i < P.length; i++) {
		k = minNum * P[i] + l;
		while(l < k) {
			arr[l] = i;
			l++;
		}
	}

	var barrier = arr[Math.floor(Math.random()*100)];
	return barrier;
}

// 最小公倍数
function gcd(a,b) {
	var m, n, a, b, t, c;
	m = a;
	n = b;
	var minNum = Math.min(a, b);
	var maxNum = Math.max(a, b);

	while(b != 0) {
		c = a % b;
		a = b;
		b = c;
	}

	return m*n/a;
}

for(var i = 0; i < 10; i++) {
	console.log(randomStair(), randomBarrier(P));
}

// randomBarrier(P);